/******************************************************************************\
*                                                                              *
*     File: TestSet_output.h                                                   *
*                                                                              *
*   Author: Douwe A. van Twillert                                              *
*  Purpose: Defines hooks to generate output for the TestSet test framework    *
*  Version: 1.0      TWI 20070311                                              *
*           - Initial version                                                  *
*  Version: 1.0.1    AKK 20070322                                              *
*           - TestSet_output_not_reached_failed(...) added                     *
*  Version: 1.0.2    TWI 20070323                                              *
*           - Changed all tabs to spaces                                       *
*           - Made versioning comments consistent                              *
*  Version: 1.1      TWI 20080218                                              *
*           - Changed the header file for clear printing                       *
*                                                                              *
\******************************************************************************/

#ifndef __TEST_SET_OUTPUT
#define __TEST_SET_OUTPUT

/*
 *  System Includes
 */

/*
 *  Module defines
 */

/*
 *  Module typedefinitions
 */

/*
 *  Module Exported Global data
 */

/*
 *  Module Exported functions
 */
 /* output can be generated before and after each TestSet and TestCase */
extern void TestSet_output_all_test_sets_before(int nr_of_tests);
extern void TestSet_output_all_test_sets_after(int passed, int failed,
                                               int total, int nr_of_test_sets);
extern void TestSet_output_test_set_before(const char* test_set_name,
                                           int nr_of_tests);
extern void TestSet_output_test_set_after(const char* test_set_name, int passed,
                                          int failed, int nr_of_tests);
extern void TestSet_output_test_case_before( const char* test_case_name );
extern void TestSet_output_test_case_after(const char* test_case_name,
                                           bool test_result);

/* The verification failed output */
extern void TestSet_output_verification_failed(const char* file, int linenr,
                                               const char* expression);
// AKK 20070322 added
extern void TestSet_output_not_reached_failed(const char* file, int linenr);
// AKK - END
 
/* The output for expected and caght Signals and assertions */
extern void TestSet_output_expect_signal(int signal_nr);
extern void TestSet_output_expect_assertion_failed();

extern void TestSet_output_unhandled_exception(const char* test_case_name);

/* Internal error output functions */
extern void TestSet_output_ensure(const char* file, int linenr,
                                  const char* function, const char* condition);
extern void TestSet_output_magic(const char* file,
                                 int linenr,
                                 const char* function,
                                 const char* kind,
                                 unsigned int set_magic,
                                 unsigned int expected_magic);

#endif  // __TEST_SET
